Field of the Disclosure
This disclosure relates generally to persistent data stores and more specifically to data stores using byte-addressable persistent memory technologies.
Description of the Related Art
Data stores, such as key-value stores with simple GET/PUT based interfaces, have become an integral part of modern data center infrastructures. Many of these works present the data store as a volatile cache for a backend database. However, even if the data store is persistent, systems are traditionally designed to utilize slow, block-based storage mediums and marshal updates, such as via a file system interface, into a different data representation (e.g., block-based representation). In many cases, warming up the DRAM cache can take up a long time (e.g., several hours) in workloads with large data sets.
Traditional key-value stores typically structured for “single-point” query operations such as GET and PUT and are frequently architected either as standalone databases or as caches layered on top of larger backend databases. One of the attributes of these systems may be low latency, which is why a hash table based “backbone structure” may be preferred in some implementations. Such a hash table may thus incur amortized constant time lookup overheads.
In some embodiments, key-value stores may include a rich set of subsystems designed to improve overall performance. For example, a key-value stores may employ one or more cache management algorithms (e.g. different variants of the LRU scheme). Many of key-value stores perform their own memory management instead of relying on a system's memory management libraries. Additionally, RDMA-based networking substrates may boost performance and GPUs and/or other hardware features may be utilized to scale key-value stores.
Key-value stores may also provide persistence capabilities. For example, a key-value store may optimize the storage tier using algorithms such as log-structured merge trees (LSM-trees) that may be considered effective on slow, block-based storage media. This is understandable since traditionally the storage stack has been exclusively dominated by block-based storage technologies (e.g., spinning media, NAND flash, etc.) that may be orders of magnitude slower than DRAM. However, in some embodiments, byte-addressable persistent memory technologies may be utilized to improve for key-value store implementations, as described herein.
While key-value stores generally assume a simple string or block based structure of keys and values, in some embodiments, values may be instances of richer data types such as sets, lists, publish/subscribe pools, maps, hyperloglogs, etc. The diversity in the structures of these value types may naturally align them to persistent (e.g., non-volatile) memory centric implementations.
While the disclosure is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the disclosure is not limited to embodiments or drawings described. It should be understood that the drawings and detailed description hereto are not intended to limit the disclosure to the particular form disclosed, but on the contrary, the disclosure is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. Any headings used herein are for organizational purposes only and are not meant to limit the scope of the description or the claims. As used herein, the word “may” is used in a permissive sense (i.e., meaning having the potential to) rather than the mandatory sense (i.e. meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.